package leetcode.strings;

/**
 * 将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数：（下面这样的形状）
 * <p>
 * P   A   H   N
 * A P L S I I G
 * Y   I   R
 * 之后按逐行顺序依次排列："PAHNAPLSIIGYIR"
 * <p>
 * <p>
 * <p>
 * 实现一个将字符串进行指定行数的转换的函数:
 * <p>
 * string convert(string text, ints nRows);
 * convert("PAYPALISHIRING", 3) 应当返回 "PAHNAPLSIIGYIR" 。
 */
public class Solution5 {
    public String convert(String s, int numRows) {
        String[] rows = new String[numRows];
        for (int i = 0; i < rows.length; i++) {
            rows[i] = "";
        }
        if (numRows - 1 == 0) {
            return s;
        } else {
            for (int i = 0; i < s.toCharArray().length; i++) {
                int curIndex = i % (2 * (numRows - 1));
                if (curIndex == 0) {
                    int k = 0;
                    for (int j = 0; j < 2 * (numRows - 1); j++) {
                        if (i < s.toCharArray().length) {
                            if (j < numRows) {
                                rows[k++] += s.toCharArray()[i++];
                            } else if (j == numRows) {
                                k = k - 2;
                                rows[k--] += s.toCharArray()[i++];
                            } else {
                                rows[k--] += s.toCharArray()[i++];
                            }
                        } else {
                            break;
                        }
                    }
                    i--;
                }
            }
        }
        String result = "";
        for (String row : rows) {
            result += row;
        }
        return result;
    }

    public static void main(String[] args) {
        System.out.println(new Solution5().convert("A", 1));
    }
}
